
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Kafka的重平衡机制了解吗？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Kafka的重平衡机制了解吗？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Kafka的重平衡机制是什么？其主要目标是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Kafka的重平衡机制是指在消费者组发生变化（如新成员加入或现有成员离开）时，系统重新为消费者分配分区的过程。其主要目标是确保消费者组内的负载均衡和数据的高可用性。</div>
          </div>
          <div class="card-source">来源: 什么是重平衡机制？</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">请列举至少三种会触发Kafka重平衡的条件。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">触发Kafka重平衡的条件包括：1. 消费者组内有新消费者加入；2. 消费者组内的消费者退出；3. 消费者组内的消费者心跳超时；4. 消费者组的消费者状态发生变化（如网络异常、消费者崩溃等）。</div>
          </div>
          <div class="card-source">来源: 重平衡的触发条件</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">在Kafka中，什么是消费者组（Consumer Group）？它如何处理消息？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">消费者组是一组逻辑上相互关联的消费者的集合，它们共同消费一个或多个主题的消息。其核心特点是，每个消息只会被消费者组内的一个消费者处理，从而实现消息消费的负载均衡。</div>
          </div>
          <div class="card-source">来源: 消费者组和消费这偏移量</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">什么是消费者偏移量（Consumer Offset）？它在Kafka中起什么作用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">消费者偏移量是指消费者在一个特定分区中已经消费到的消息的位置信息。它的作用是让每个消费者能够跟踪自己的消费进度，以便在重启后可以从上次的位置继续消费，从而确保了容错能力。</div>
          </div>
          <div class="card-source">来源: 消费者组和消费这偏移量</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在重平衡过程中，消费者组协调器（Coordinator）扮演什么角色？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">协调器是消费者组中选举出的一个消费者，负责协调整个重平衡过程。它的职责包括获取消费者组信息、计算新的分区分配方案、将新方案通知给组内所有消费者，并最终完成分区的重新分配。</div>
          </div>
          <div class="card-source">来源: 重平衡的执行过程</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Kafka的心跳机制是如何工作的？它与重平衡有什么关系？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">消费者会定期向协调器发送心跳请求，以表明自己仍然存活。如果协调器在设定的超时时间内没有收到某个消费者的心跳，就会认为该消费者失效，并触发重平衡机制来重新分配其负责的分区。</div>
          </div>
          <div class="card-source">来源: Kafka心跳机制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Kafka的重平衡过程会带来哪些负面影响？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">重平衡可能带来的负面影响包括：1. 消息处理中断；2. 集群资源消耗增加；3. 消费者组不稳定；4. 消息处理延迟增加；5. 客户端应用程序需要处理中断和延迟带来的异常情况。</div>
          </div>
          <div class="card-source">来源: 重平衡的影响</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">除了心跳机制，Kafka还如何检测消费者的健康状态？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">除了心跳，还可以通过监控消费者的一些关键指标（如消息处理速度）或让消费者周期性地进行健康状态自检来实现。如果发现消费者出现异常（如处理过慢、异常退出），协调器会将其标记为不健康并触发相应处理机制。</div>
          </div>
          <div class="card-source">来源: 消费者健康状态检测</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">简述Kafka重平衡的完整执行流程。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">重平衡的流程包括：1. 检测到触发条件；2. 选举一个协调器；3. 协调器计算出新的分区分配方案；4. 协调器将分区重新分配给消费者；5. 协调器通知所有消费者新的分配方案；6. 消费者停止旧分区消费，开始消费新分配的分区；7. 所有消费者都成功切换后，重平衡完成。</div>
          </div>
          <div class="card-source">来源: 重平衡的执行过程</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
